//
//  main.c
//  enumerate
//
//  Created by admin on 2019/7/25.
//  Copyright © 2019 猫爷爷的酱醋茶. All rights reserved.
//


/*
        enum - 枚举，限定变量的取值
 
1. 语法格式
    enum 枚举类型名称 变量名;
    enum Direction dir;
    表示声明了一个变量为dir，类型为enum Driection
    这个变量的特点，只能存储这个枚举类型限定的取值之一。
 
    无论什么类型的枚举变量都占四个字节。
    枚举变量中真正存储的是 枚举值所对应的整型的数。
 
    所以我们才可以使用%d输出枚举变量的值。 例：TheEnumerateDate();
 
2.命名规范
    枚举值的名称都以枚举类型来开头 例：enum Direction
 
 
        typedef -> type define 重新定义类型

 1. 语法结构
    typedef 已经存在的数据类型 别名;
 例：typedef char* string;
    将char* 类型去了一个别名 叫string
    string name = "jack";
 
 2.可以用于声明结构体、枚举的同时，使用typedef来为结构体类型去一个别名 例：Direction
    最常用的是为一个匿名结构体、枚举，定义一个别名，例：Student
 
 
 */
#include <stdio.h>

typedef enum Direction
{
    DirectionNorth,//0
    DirectionWest,//1
    DirectionEast,//2
    DirectionSouth//3
} Direction;

typedef struct
{
    char *name;
    int studentID;
    int score;
}Student;

//枚举变量里面存储的值
void TheEnumerateDate(void);

//typedef 为匿名结构体取别名
void TypedefToStructure(void);

int main(int argc, const char * argv[])
{
    TypedefToStructure();

    return 0;
}

//typedef 为匿名结构体取别名
void TypedefToStructure(void)
{
    Student students = {"name",38,89};
    printf("%d\n",students.studentID);
}



//枚举变量里面存储的值
void TheEnumerateDate(void)
{
    Direction dir = DirectionNorth;
    printf("%d\n",dir);
}
